package com.liang.pcc.controller;

import cn.dev33.satoken.stp.SaTokenInfo;
import com.liang.pcc.common.result.Result;
import com.liang.pcc.common.result.Results;
import com.liang.pcc.dto.req.UserLoginReq;
import com.liang.pcc.dto.req.UserRegisterReq;
import com.liang.pcc.dto.req.UserUpdateReq;
import com.liang.pcc.dto.resp.UserLoginResp;
import com.liang.pcc.service.AuthUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
 * 用户控制器
 */
@RestController
@RequestMapping("/user")
@RequiredArgsConstructor
public class UserController {

    private final AuthUserService userService;

    /**
     * 用户注册
     */
    @PostMapping("/register")
    public Result<Void> register(@RequestBody UserRegisterReq param) {
        userService.register(param);
        return Results.success("注册成功");
    }

    /**
     * 用户登录
     */
    @PostMapping("/login")
    public Result<UserLoginResp> doLogin(@RequestBody UserLoginReq param) {
        return Results.success("登录成功", userService.login(param));
    }

    /**
     * 注销登录
     */
    @GetMapping("/logout")
    public Result<Void> logout(@RequestParam("account") String account) {
        userService.logout(account);
        return Results.success("注销成功");
    }

    /**
     * 修改个人信息
     */
    @PatchMapping("/update/info")
    public Result<Void> update(@RequestBody UserUpdateReq param) {
        userService.updateUserInfo(param);
        return Results.success("已成功修改信息!");
    }

    /**
     * 修改密码
     */
    @PatchMapping("/update/password")
    public Result<Void> updatePassword(@RequestBody UserUpdateReq param) {
        userService.updatePassword(param);
        return Results.success("已成功修改密码!");
    }
}
